from selenium.webdriver.common.by import By
from UItest.elem import jxwLoginElems
from UItest.common.basepage import BasePage


class LoginPage(BasePage):

    url = 'http://invest-pro.ihdwork.com/#/login'#URL地址，页面的属性
    # url = 'http://localhost:84/'

    # def __init__(self,driver):    #driver要传，不要用初始化浏览器（driver=webdriver.Edge），后续会把操作连接而不是新的浏览器
    #    self.driver = driver#不要了，我在basepage的BasePage已经用过了

    def Login(self,username,password):
       """登录过程（页面的方法）"""
       # self.driver.find_element(*Loginelems.username_locator).send_keys(username)#*是因为这个是一个元组，我们要取到元组里面的两个值，就把他拆开了
       # self.driver.find_element(*Loginelems.pwd_locator).send_keys(password)
       # self.driver.find_element(*Loginbase.click_locator).click()
       #将selenium二次封装直接使用了
       self.fill(jxwLoginElems.username_locator,username)
       self.fill(jxwLoginElems.pwd_locator,password)
       self.click(jxwLoginElems.click_locator)
       # self.click(*Loginbase.click_locator)这里带*号是错误的，父接收的是元组，在父中有一个*再写一个*就会报错
       return self #可以直接链式

    def Load(self):
       self.driver.get(self.url)
       return self

    def Find(self):
        #找到提示的文字做断言
        text= self.driver.find_element(*jxwLoginElems.content_locator).text
        return text
    def Findhome(self):
        text= self.driver.find_element(By.XPATH, "(/html/body/div[1]/section/aside/div/div/div[1]/span").text
        return text

"""PO模式
-每一个页面当中的操作行为封装成了方法-
-页面url优化成类属性
-尽量让方法的返回值返回一个Pageobject对象，可以是 self，也可以是其他的页面对象。
-为什么返回po对象，方便链式调用

为什么用po模式? po模式的好处在哪里
可读性强，通过方法名称表示页面操作
可扩展性,
可维护性。前端发生变化和用例发生变化。
可复用性。重复代码共用。 
"""
